import requests
import re
import os
#2021-05-12 23:10 by 炸天帮成员
#就是一个看妹子的网站，可能以后这url就没了。
#主要是用来爬取该网页的第一页上面的所有的第二层网址内的所有相关图片。
#部分文件获取路径不一样，且图片质量也就那样，不再改进。
#以下为第一层网页的第一页
url='https://www.516m.com/'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3868.400 QQBrowser/10.8.4394.400',
                'referer':'https://www.516m.com/',
                 'connection':'keep-alive'}
mainFileDir=r".\_6_516pic"
if os.path.exists(mainFileDir):
    pass
else:
    os.mkdir(mainFileDir)
urlFile=mainFileDir+'\\516m_main.html'

r=requests.get(url,headers=headers)
f=open(urlFile,'wb')
f.write(r.content)
f.close()

f=open(urlFile,'r',encoding='utf-8')
data_main=f.read()
f.close()

print(data_main,type(data_main))

pttn='a href=\"https?:\/\/\S*\.html'
result_main=re.findall(pttn,data_main)
print('result_main=',result_main,'\n',len(result_main))

pttn='https?:\/\/\S*.html'
result2_main=re.findall(pttn,str(result_main))    #二次筛选
print('result2_main=',result2_main)
#------------------------------------------------------------
def find_next_pic_url(data_url):
    pttn='a class=\"next page-numbers\" \S*.html'
    result=re.findall(pttn,data_url)
    print(result)
    pttn='https?:\/\/\S*.html'
    result2=re.findall(pttn,str(result[0]))
    print(result2)
    return result2[0]
#--------------------------------------------------------------
#以下为从第一层网页的第一页进入第二层网页
main_index=0
sub_index=0
for i in range(0,len(result2_main)):
    url=result2_main[i]
    r=requests.get(url,headers=headers)
    urlFile2=mainFileDir+'\\'+str(main_index)+'_'+str(sub_index)+'.txt'
    f=open(urlFile2,'wb')
    f.write(r.content)
    f.close()
    f=open(urlFile2,'r',encoding='utf-8')
    data=f.read()
    f.close()
    print(data,type(data))

    pttn='img src=\"https?:\/\/\S*\d*'
    result=re.findall(pttn,data)
    print('result=',result)
    try:
        print('result[0]=',result[0])#因为那部分的图片pttn格式不能被这样匹配，但这个网站图片也就那个样，没兴趣继续修改。
    except IndexError:
        main_index -=1
        continue
    pttn='https?:\/\/\S*\.html\S*\d'#部分连接不是这个格式，需要其它pttn来匹配，但没必要，基本上那些妹子不好看。
    result2=re.findall(pttn,str(result[0]))
    try:
        print('第一层网页的第一页进入第二层网页的result2[0]=',result2[0])
    except IndexError:  #如果result2[0]内容不存在
        main_index -=1
        continue    #退出当前for循环，并进行下一个for循环的操作

    pttn_title='h1 class=\"article-title\"\S*'
    result_title=re.findall(pttn_title,data)
    pttn_title='>(\S*)<'
    result_title=re.findall(pttn_title,str(result_title[0]))
    try :
        print('title=',result_title[0],'\n')
    except IndexError:  #如果result_title[0]内容不存在
        main_index -=1
        continue   #退出当前for循环，并进行下一个for循环的操作

    url=result2[0]
    r=requests.get(url,headers=headers)
    picName=result_title[0]
    picFile=mainFileDir+'\\'+picName+'_'+str(sub_index)+'.jpg'
    f=open(picFile,'wb')        #储存图片
    f.write(r.content)
    f.close()
    #-----------------------------------------------------------
    while True:
        url=find_next_pic_url(data)
        r=requests.get(url,headers=headers)
        main_index+=1
        sub_index+=1
        urlFile2=mainFileDir+'\\'+str(main_index)+'_'+str(sub_index)+'.txt'
        f=open(urlFile2,'wb')
        f.write(r.content)
        f.close()
        f=open(urlFile2,'r',encoding='utf-8')
        data=f.read()
        f.close()
        print(data,type(data))

        pttn='img src=\"https?:\/\/\S*\d*'
        result=re.findall(pttn,data)
        print('result=',result)
        pttn='https?:\/\/\S*.html\S*\d'
        result2=re.findall(pttn,str(result[0]))
        try:    #while True 退出的关键点，即当正则表达式取出图片连接失败时
            print(result2[0])
        except IndexError:
            print(f'{picName} is end')
            file_name=mainFileDir
            for root,dirs,files in os.walk(file_name):
                for name in files:
                    if name.endswith(".txt"):
                            os.remove(os.path.join(root,name))
                            print("Delete File:"+os.path.join(root,name))
            print("图片保存在路径",mainFileDir)
            break

        pttn_title='h1 class=\"article-title\"\S*'
        result_title=re.findall(pttn_title,data)
        pttn_title='>(\S*)<'
        result_title=re.findall(pttn_title,str(result_title[0]))
        print('title=',result_title,'\n')

        url=result2[0]
        r=requests.get(url,headers=headers)
        picName=result_title[0]
        picFile=mainFileDir+'\\'+picName+'_'+str(sub_index)+'.jpg'
        f=open(picFile,'wb')        #储存图片
        f.write(r.content)
        f.close()
